Error correction was once reserved for environments where probability of error was high, such as communication between two wireless devices. Now, however, error correction is being applied to environments where the probability of error is relatively low, such as communication between two servers communicating through some parallel or serial connection.
One particular type of error correction used in the latter situation is transmission codes complemented with additional parity information. Transmission codes basically take an uncoded data vector, which has a number of values, and create a coded data vector that is larger than the uncoded data vector. For instance, in a 5B/6B transmission code, a coded data vector having six bits is created from an uncoded data vector having five bits. The sixth bit is generally selected so that a property of the coded data vector will obey certain rules. The property is called the “balance” of the data vector, and errors in received data vectors are determined by whether the balance of a received data vector fits within the rules.
There are instances where an error or errors occur in a coded data vector such that the received version of the coded data vector will meet balance requirements and meet the rules at the location, in a data stream, of the error and a rule violation is detected only later in the data stream. Thus, techniques are required for determining errors in coded data vectors earlier in the data stream.